// pages/title/add_title/add_title.js
import {
  debounce,
  splitBase64IntoChunks 
} from '../../../../utils/util'
const appg = getApp().globalData
Page({

  /**
   * 页面的初始数据
   */
  data: {
    opt_name: null,
    form: {
      type: 0,
      title: "",
      fileList: [],
      content: "",
    },
  },
  // 处理单选框
  onChange(event) {
    this.setData({
      'form.type': event.detail,
    });
  },
  // 处理输入的
  myChange: debounce(function (e) {
    console.log(e);
    let value = e.detail;
    let form = 'form.' + e.currentTarget.dataset.field;
    this.setData({
      [form]: value,
    })
  }, 500),
  // 图片上传
  async handleImageUpload(e) {
    console.log(e.detail.file.url);
    let imgUrl = e.detail.file.url
    // let imgType = null;
    // // 如果需要获取图片类型的话
    // wx.getImageInfo({
    //   src: imgUrl,
    //   success(res) {
    //     console.log(res);
    //     imgType = res.type
    //   }
    // });
    let imgBase64 = null;
    const fs = wx.getFileSystemManager()
    // 同步接口
    try {
      const res = fs.readFileSync(imgUrl, 'base64', 0)
      console.log("图片的base64：", res)
      imgBase64 = res
    } catch (e) {
      wx.showToast({
        title: e,
      })
    }
    // 分块
    let chunks = splitBase64IntoChunks(imgBase64, 1024 * 64)
    // 删除 "http://"  
    imgUrl = imgUrl.replace("http://", "");
    // // 删除文件的扩展名，包括 "."  
    // imgName = imgName.replace(/\.[^.]+$/, "");
    const socket = wx.connectSocket({
      url: appg.ws,
      success() {
        console.log("socket 服务器连接成功");
      },
      fail() {
        console.log("socket 服务器连接失败");
      }
    });
    socket.onOpen((res) => {
      socket.send({
        data: JSON.stringify({
          event: 'imgName',
          data: imgUrl
        })
      });
      console.log("onOpen", res);
      socket.onMessage(async (data) => {
        const json = JSON.parse(data.data)
        console.log("服务器返回来的数据:", json);
        if (json.event == "sentImgUrl") {
          console.log(json.data.imgUrl, "图片在线地址");
          const uploadUrl = 'https://' + json.data.imgUrl
          const Url = {
            url: uploadUrl
          }
          this.data.form.fileList.push(Url)
          this.setData({
            'form.fileList': this.data.form.fileList
          })
          // 关闭连接
          socket.close({
            code: 1000
          })
        }
      });
      // 逐个发送块数据
      chunks.forEach((chunk, index) => {
        let eventData = {
          event: 'base64Data', // 事件标识字段
          data: chunk
        };
        setTimeout(() => {
          socket.send({
            data: JSON.stringify(eventData),
            success: () => {
              console.log(`块 ${index + 1}/${chunks.length} 已发送`);
              if (index === chunks.length - 1) {
                // 所有块数据已发送，发送结束消息
                socket.send({
                  data: JSON.stringify({
                    data: {},
                    event: 'upload_complete'
                  }),
                  success: () => {
                    console.log('上传完成');
                    // 关闭定时器或执行其他操作
                    wx.hideLoading()
                  },
                });
              };
            },
          });
        }, index * 200); // 延迟发送以避免过快发送
      });

      socket.onError((error) => {
        console.log("错误信息：", error);
      });
      socket.onClose((code, reason) => {
        console.log("一个数字值表示关闭连接的状态号，表示连接被关闭的原因。:", code, "表示连接被关闭的原因。", reason);
      })
    })
  },
  // 图片删除
  deleteIcon(e) {
    console.log(e.detail.index, e);
    this.data.form.fileList.splice(e.detail.index,1)
    this.setData({
      'form.fileList':this.data.form.fileList
    })
  },
  // 发布
  async addTitle(){
    try {
      const json = await getApp().$axios("/addNotice","POST",{...this.data.form,uid:appg.userInfo.id,school_ID:appg.userInfo.school_ID});
      console.log(json);
      if (json.status!==200) {
        wx.showToast({
          title: josn.data,
          icon:'error'
        })
        return
      }
      wx.navigateBack({
        delta:1
      })
    } catch (error) {
      wx.showToast({
        title: error.msg,
        icon:'error'
      })
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.request({
      url: 'https://api.xygeng.cn/one',
      success: (res) => {
        console.log(res);
        let content = res.data.data.content
        this.setData({
          content
        })
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})